package leecode.topic191;

/**
 * @Auther: hq
 * @Description:  颠倒给定的 32 位无符号整数的二进制位。
 *
 * 输入: 00000010100101000001111010011100
 * 输出: 00111001011110000010100101000000
 * 解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596，
 * 因此返回 964176192，其二进制表示形式为 00111001011110000010100101000000。
 *
 *
 * @Date 2019/7/9 16:54
 */
public class Topic191 {
    // you need treat n as an unsigned value
    public static int hammingWeight(int n) {
        int sum = 0;
        if(n < 0 ){
            n = n << 1;
            sum =+ 1;
        }

        while (sum != 10 &&  n  != 0) {
            sum += n & 1;
            n = n >> 1;
        }
        return sum;
    }

    public static void main(String[] args){
        System.out.println(hammingWeight(-2147483648));
    }

}
